package com.zwps.biz.domain.service;

import java.io.InputStream;
import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.zwps.biz.domain.enums.FileUseTypeEnum;
import com.zwps.biz.api.model.dto.file.UploadFileByUrlDTO;
import com.zwps.biz.api.model.dto.file.record.AddFileRecordDTO;
import com.zwps.biz.api.model.vo.file.FileUploadInfoVO;

/**
 * 文件上传管理
 * 
 * @ClassName: FileManageService
 * @Description:
 * @author lyh
 * @date 2023年8月19日 下午11:55:56
 *
 */
public interface FileManageService {

    /**
     * 
     * @Title: uploda
     * @Description:
     * @param file
     * @param path
     * @return FileUploadInfoVO
     * @author lyh
     * @date 2023年8月19日 下午11:55:54
     */
    FileUploadInfoVO uploda(MultipartFile file, String path);

    /**
     * 
     * @Title: uploda
     * @Description: 
     * @param stream
     * @param path
     * @param fileName
     * @param fileType
     * @param fileSize
     * @param useType
     * @param parentId
     * @return FileUploadInfoVO
     * @author lyh
     * @date 2023年8月20日 上午12:10:07
     */
    FileUploadInfoVO uploda(InputStream stream, String path, String fileName, String fileType, Long fileSize,
            FileUseTypeEnum useType, String parentId);

    List<FileUploadInfoVO> uploda(MultipartFile[] files, String path);

    /**
     * 根据文件地址进行文件上传
     * @param dto 文件地址 关联表id 关联表名称
     * @return
     */
    FileUploadInfoVO uploadFileByUrl(UploadFileByUrlDTO dto);

    /**
     * 根据文件地址集合进行文件上传
     * @param dto 文件地址 关联表id 关联表名称
     * @return
     */
    List<FileUploadInfoVO> uploadFileByUrlList(List<UploadFileByUrlDTO> dto);

    FileUploadInfoVO addFileRecord(MultipartFile file,String fileName,String fileUrl,Integer externalFile);

    String saveUploadRecord(AddFileRecordDTO dto);
}
